home *** CD-ROM | disk | FTP | other *** search
/ Champak 66 / Vol 66.iso / games / bob_espo.swf / scripts / __Packages / MazeGenerator.as < prev    next >
Text File  |  2013-04-24  |  14KB  |  391 lines

  1. class MazeGenerator
  2. {
  3.    static var sLINKAGENAME_CORNER_UP = "mcPieceCornerUp";
  4.    static var sLINKAGENAME_CORNER_DOWN = "mcPieceCornerDown";
  5.    static var sLINKAGENAME_START = "mcPieceStart";
  6.    static var sLINKAGENAME_LATERAL = "mcPieceLateral";
  7.    static var sLINKAGENAME_RIGHTJCT = "mcPieceRightJct";
  8.    static var sLINKAGE_PANEL_START = "SB_Panneau_Start";
  9.    static var sLINKAGE_PANEL_FINISH = "SB_Panneau_Finish";
  10.    static var nUPPER_Y = 60;
  11.    static var nMIDDLE_Y = 200;
  12.    static var nLOWER_Y = 340;
  13.    static var nLEFT_X = 70;
  14.    static var nMIDDLE_LX = 220;
  15.    static var nMIDDLE_RX = 380;
  16.    static var nRIGHT_X = 530;
  17.    static var nFIRST_X = -100;
  18.    static var nSECOND_X = 140;
  19.    static var nTHIRD_X = 300;
  20.    static var nFOURTH_X = 460;
  21.    static var nFIRST_Y = 0;
  22.    static var nSECOND_Y = 120;
  23.    static var nTHIRD_Y = 280;
  24.    static var sNAME_SE = "mcStart";
  25.    static var sNAME_C1 = "mcCornerUpLeft";
  26.    static var sNAME_T1 = "mcLateralTopLeft";
  27.    static var sNAME_T2 = "mcLateralTopRight";
  28.    static var sNAME_C2 = "mcCornerUpRight";
  29.    static var sNAME_RJ = "mcRightJct";
  30.    static var sNAME_C3 = "mcCornerDownLeft";
  31.    static var sNAME_B1 = "mcLateralBottomLeft";
  32.    static var sNAME_B2 = "mcLateralBottomRight";
  33.    static var sNAME_C4 = "mcCornerDownRight";
  34.    static var nINDEX_SE = 0;
  35.    static var nINDEX_C1 = 1;
  36.    static var nINDEX_T1 = 2;
  37.    static var nINDEX_T2 = 3;
  38.    static var nINDEX_C2 = 4;
  39.    static var nINDEX_RJ = 5;
  40.    static var nINDEX_C3 = 6;
  41.    static var nINDEX_B1 = 7;
  42.    static var nINDEX_B2 = 8;
  43.    static var nINDEX_C4 = 9;
  44.    static var nUSED_SE_PIECE = 0;
  45.    static var nUSED_RJ_PIECE = 0;
  46.    static var sSTATE_START = "Start";
  47.    static var sSTATE_MIDWAY = "Midway";
  48.    static var sSTATE_FINISH = "Finish";
  49.    static var nSTART_PANEL_DEPTH = 1000000;
  50.    static var nFINISH_PANEL_DEPTH = 1000001;
  51.    static var nPANEL_X_SCALE = 151.2;
  52.    static var nPANEL_Y_SCALE = 130.6;
  53.    function MazeGenerator(_mcContainer)
  54.    {
  55.       this.mcContainer = _mcContainer;
  56.       this.aVLines = [[],[],[],[],[],[],[],[],[],[]];
  57.       this.aHLines = [[],[],[],[],[],[],[],[],[],[]];
  58.       this.nDepth = 0;
  59.    }
  60.    function addTrack(_bVertical, _mcLine)
  61.    {
  62.       var _loc4_ = this.getTabIndexByName(_mcLine._parent._parent._name);
  63.       if(_bVertical)
  64.       {
  65.          this.aVLines[_loc4_].push(_mcLine);
  66.       }
  67.       else
  68.       {
  69.          this.aHLines[_loc4_].push(_mcLine);
  70.       }
  71.    }
  72.    function getTabIndexByName(_nName)
  73.    {
  74.       var _loc3_ = 0;
  75.       switch(_nName)
  76.       {
  77.          case MazeGenerator.sNAME_SE:
  78.             _loc3_ = MazeGenerator.nINDEX_SE;
  79.             break;
  80.          case MazeGenerator.sNAME_RJ:
  81.             _loc3_ = MazeGenerator.nINDEX_RJ;
  82.             break;
  83.          case MazeGenerator.sNAME_C1:
  84.             _loc3_ = MazeGenerator.nINDEX_C1;
  85.             break;
  86.          case MazeGenerator.sNAME_C2:
  87.             _loc3_ = MazeGenerator.nINDEX_C2;
  88.             break;
  89.          case MazeGenerator.sNAME_C3:
  90.             _loc3_ = MazeGenerator.nINDEX_C3;
  91.             break;
  92.          case MazeGenerator.sNAME_C4:
  93.             _loc3_ = MazeGenerator.nINDEX_C4;
  94.             break;
  95.          case MazeGenerator.sNAME_B1:
  96.             _loc3_ = MazeGenerator.nINDEX_B1;
  97.             break;
  98.          case MazeGenerator.sNAME_B2:
  99.             _loc3_ = MazeGenerator.nINDEX_B2;
  100.             break;
  101.          case MazeGenerator.sNAME_T1:
  102.             _loc3_ = MazeGenerator.nINDEX_T1;
  103.             break;
  104.          case MazeGenerator.sNAME_T2:
  105.             _loc3_ = MazeGenerator.nINDEX_T2;
  106.       }
  107.       return _loc3_;
  108.    }
  109.    function getTabIndex(_nX, _nY)
  110.    {
  111.       var _loc4_ = 0;
  112.       if(_nX >= MazeGenerator.nFIRST_X && _nX < MazeGenerator.nSECOND_X)
  113.       {
  114.          if(_nY >= MazeGenerator.nFIRST_Y && _nY < MazeGenerator.nSECOND_Y)
  115.          {
  116.             _loc4_ = MazeGenerator.nINDEX_C1;
  117.          }
  118.          else if(_nY >= MazeGenerator.nSECOND_Y && _nY < MazeGenerator.nTHIRD_Y)
  119.          {
  120.             _loc4_ = MazeGenerator.nINDEX_SE;
  121.          }
  122.          else
  123.          {
  124.             _loc4_ = MazeGenerator.nINDEX_C3;
  125.          }
  126.       }
  127.       else if(_nX >= MazeGenerator.nSECOND_X && _nX < MazeGenerator.nTHIRD_X)
  128.       {
  129.          if(_nY >= MazeGenerator.nFIRST_Y && _nY < MazeGenerator.nSECOND_Y)
  130.          {
  131.             _loc4_ = MazeGenerator.nINDEX_T1;
  132.          }
  133.          else
  134.          {
  135.             _loc4_ = MazeGenerator.nINDEX_B1;
  136.          }
  137.       }
  138.       else if(_nX >= MazeGenerator.nTHIRD_X && _nX < MazeGenerator.nFOURTH_X)
  139.       {
  140.          if(_nY >= MazeGenerator.nFIRST_Y && _nY < MazeGenerator.nSECOND_Y)
  141.          {
  142.             _loc4_ = MazeGenerator.nINDEX_T2;
  143.          }
  144.          else
  145.          {
  146.             _loc4_ = MazeGenerator.nINDEX_B2;
  147.          }
  148.       }
  149.       else if(_nY >= MazeGenerator.nFIRST_Y && _nY < MazeGenerator.nSECOND_Y)
  150.       {
  151.          _loc4_ = MazeGenerator.nINDEX_C2;
  152.       }
  153.       else if(_nY >= MazeGenerator.nSECOND_Y && _nY < MazeGenerator.nTHIRD_Y)
  154.       {
  155.          _loc4_ = MazeGenerator.nINDEX_RJ;
  156.       }
  157.       else
  158.       {
  159.          _loc4_ = MazeGenerator.nINDEX_C4;
  160.       }
  161.       return _loc4_;
  162.    }
  163.    function generate()
  164.    {
  165.       this.generateStart();
  166.       this.generateLaterals();
  167.       this.generateCorners();
  168.       this.generateRightJct();
  169.    }
  170.    function cleanUp()
  171.    {
  172.       this.mcPieceSE.removeMovieClip();
  173.       this.mcPieceC1.removeMovieClip();
  174.       this.mcPieceT1.removeMovieClip();
  175.       this.mcPieceT2.removeMovieClip();
  176.       this.mcPieceC2.removeMovieClip();
  177.       this.mcPieceRJ.removeMovieClip();
  178.       this.mcPieceC3.removeMovieClip();
  179.       this.mcPieceB1.removeMovieClip();
  180.       this.mcPieceB2.removeMovieClip();
  181.       this.mcPieceC4.removeMovieClip();
  182.       this.mcContainer.mcPanelStart.removeMovieClip();
  183.       this.mcContainer.mcPanelFinish.removeMovieClip();
  184.    }
  185.    function isPieceFlipped(_nIndex)
  186.    {
  187.       var _loc3_ = false;
  188.       if(_nIndex == MazeGenerator.nINDEX_B1 && this.mcPieceB1._xscale == -100)
  189.       {
  190.          _loc3_ = true;
  191.       }
  192.       else if(_nIndex == MazeGenerator.nINDEX_B2 && this.mcPieceB2._xscale == -100)
  193.       {
  194.          _loc3_ = true;
  195.       }
  196.       else if(_nIndex == MazeGenerator.nINDEX_C1 && this.mcPieceC1._xscale == -100)
  197.       {
  198.          _loc3_ = true;
  199.       }
  200.       else if(_nIndex == MazeGenerator.nINDEX_C2 && this.mcPieceC2._xscale == -100)
  201.       {
  202.          _loc3_ = true;
  203.       }
  204.       else if(_nIndex == MazeGenerator.nINDEX_C3 && this.mcPieceC3._xscale == -100)
  205.       {
  206.          _loc3_ = true;
  207.       }
  208.       else if(_nIndex == MazeGenerator.nINDEX_C4 && this.mcPieceC4._xscale == -100)
  209.       {
  210.          _loc3_ = true;
  211.       }
  212.       else if(_nIndex == MazeGenerator.nINDEX_RJ && this.mcPieceRJ._xscale == -100)
  213.       {
  214.          _loc3_ = true;
  215.       }
  216.       else if(_nIndex == MazeGenerator.nINDEX_SE && this.mcPieceSE._xscale == -100)
  217.       {
  218.          _loc3_ = true;
  219.       }
  220.       else if(_nIndex == MazeGenerator.nINDEX_T1 && this.mcPieceT1._xscale == -100)
  221.       {
  222.          _loc3_ = true;
  223.       }
  224.       else if(_nIndex == MazeGenerator.nINDEX_T2 && this.mcPieceT2._xscale == -100)
  225.       {
  226.          _loc3_ = true;
  227.       }
  228.       return _loc3_;
  229.    }
  230.    function generateStart()
  231.    {
  232.       var _loc2_ = 0;
  233.       if(CTRLGame.getRef().Level == CTRLGame.nLEVEL1)
  234.       {
  235.          _loc2_ = Math.round(Math.random() * 1);
  236.       }
  237.       else if(MazeGenerator.nUSED_SE_PIECE == 0)
  238.       {
  239.          _loc2_ = 1;
  240.       }
  241.       else
  242.       {
  243.          _loc2_ = 0;
  244.       }
  245.       this.mcPieceSE = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_START,MazeGenerator.sNAME_SE,this.nDepth++);
  246.       this.mcPieceSE.gotoAndStop(_loc2_ + 1);
  247.       this.mcPieceSE._x = MazeGenerator.nLEFT_X;
  248.       this.mcPieceSE._y = MazeGenerator.nMIDDLE_Y;
  249.       MazeGenerator.nUSED_SE_PIECE = _loc2_;
  250.       var _loc3_ = CTRLGame.getRef().addObjectViaDummy(this.mcPieceSE.piece.mcPanelStart);
  251.       var _loc4_ = this.mcContainer.attachMovie(MazeGenerator.sLINKAGE_PANEL_START,"mcPanelStart",1000000);
  252.       _loc4_._x = _loc3_.x;
  253.       _loc4_._y = _loc3_.y;
  254.       _loc4_._xscale = MazeGenerator.nPANEL_X_SCALE;
  255.       _loc4_._yscale = MazeGenerator.nPANEL_Y_SCALE;
  256.       _loc3_ = CTRLGame.getRef().addObjectViaDummy(this.mcPieceSE.piece.mcPanelFinish);
  257.       var _loc5_ = this.mcContainer.attachMovie(MazeGenerator.sLINKAGE_PANEL_FINISH,"mcPanelFinish",1000001);
  258.       _loc5_._x = _loc3_.x;
  259.       _loc5_._y = _loc3_.y;
  260.       _loc5_._xscale = MazeGenerator.nPANEL_X_SCALE;
  261.       _loc5_._yscale = MazeGenerator.nPANEL_Y_SCALE;
  262.       if(CTRLGame.getRef().Level == CTRLGame.nLEVEL1)
  263.       {
  264.          _loc4_.gotoAndStop(MazeGenerator.sSTATE_START);
  265.          _loc5_.gotoAndStop(MazeGenerator.sSTATE_MIDWAY);
  266.       }
  267.       else
  268.       {
  269.          _loc4_.gotoAndStop(MazeGenerator.sSTATE_MIDWAY);
  270.          _loc5_.gotoAndStop(MazeGenerator.sSTATE_FINISH);
  271.       }
  272.    }
  273.    function generateLaterals()
  274.    {
  275.       var _loc2_ = [1,2,3,4];
  276.       var _loc3_ = 0;
  277.       var _loc4_ = false;
  278.       _loc3_ = Math.round(Math.random() * (_loc2_.length - 1));
  279.       this.mcPieceT1 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_LATERAL,MazeGenerator.sNAME_T1,this.nDepth++);
  280.       this.mcPieceT1.gotoAndStop(_loc2_[_loc3_]);
  281.       _loc4_ = !!Math.round(Math.random());
  282.       if(_loc4_)
  283.       {
  284.          this.flipPiece(this.mcPieceT1);
  285.       }
  286.       this.mcPieceT1._x = MazeGenerator.nMIDDLE_LX;
  287.       this.mcPieceT1._y = MazeGenerator.nUPPER_Y;
  288.       _loc2_.splice(_loc3_,1);
  289.       _loc3_ = Math.round(Math.random() * (_loc2_.length - 1));
  290.       this.mcPieceT2 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_LATERAL,MazeGenerator.sNAME_T2,this.nDepth++);
  291.       this.mcPieceT2.gotoAndStop(_loc2_[_loc3_]);
  292.       _loc4_ = !!Math.round(Math.random());
  293.       if(_loc4_)
  294.       {
  295.          this.flipPiece(this.mcPieceT2);
  296.       }
  297.       this.mcPieceT2._x = MazeGenerator.nMIDDLE_RX;
  298.       this.mcPieceT2._y = MazeGenerator.nUPPER_Y;
  299.       _loc2_.splice(_loc3_,1);
  300.       _loc3_ = Math.round(Math.random() * (_loc2_.length - 1));
  301.       this.mcPieceB1 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_LATERAL,MazeGenerator.sNAME_B1,this.nDepth++);
  302.       this.mcPieceB1.gotoAndStop(_loc2_[_loc3_]);
  303.       _loc4_ = !!Math.round(Math.random());
  304.       if(_loc4_)
  305.       {
  306.          this.flipPiece(this.mcPieceB1);
  307.       }
  308.       this.mcPieceB1._x = MazeGenerator.nMIDDLE_LX;
  309.       this.mcPieceB1._y = MazeGenerator.nLOWER_Y;
  310.       _loc2_.splice(_loc3_,1);
  311.       this.mcPieceB2 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_LATERAL,MazeGenerator.sNAME_B2,this.nDepth++);
  312.       this.mcPieceB2.gotoAndStop(_loc2_[0]);
  313.       _loc4_ = !!Math.round(Math.random());
  314.       if(_loc4_)
  315.       {
  316.          this.flipPiece(this.mcPieceB2);
  317.       }
  318.       this.mcPieceB2._x = MazeGenerator.nMIDDLE_RX;
  319.       this.mcPieceB2._y = MazeGenerator.nLOWER_Y;
  320.    }
  321.    function generateCorners()
  322.    {
  323.       var _loc2_ = [1,2];
  324.       var _loc3_ = [1,2];
  325.       var _loc4_ = 0;
  326.       _loc4_ = Math.round(Math.random() * (_loc2_.length - 1));
  327.       this.mcPieceC1 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_CORNER_UP,MazeGenerator.sNAME_C1,this.nDepth++);
  328.       this.mcPieceC1.gotoAndStop(_loc2_[_loc4_]);
  329.       this.mcPieceC1._x = MazeGenerator.nLEFT_X;
  330.       this.mcPieceC1._y = MazeGenerator.nUPPER_Y;
  331.       _loc2_.splice(_loc4_,1);
  332.       this.mcPieceC2 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_CORNER_UP,MazeGenerator.sNAME_C2,this.nDepth++);
  333.       this.mcPieceC2.gotoAndStop(_loc2_[0]);
  334.       this.mcPieceC2._x = MazeGenerator.nRIGHT_X;
  335.       this.mcPieceC2._y = MazeGenerator.nUPPER_Y;
  336.       this.flipPiece(this.mcPieceC2);
  337.       _loc4_ = Math.round(Math.random() * (_loc3_.length - 1));
  338.       this.mcPieceC3 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_CORNER_DOWN,MazeGenerator.sNAME_C3,this.nDepth++);
  339.       this.mcPieceC3.gotoAndStop(_loc3_[_loc4_]);
  340.       this.mcPieceC3._x = MazeGenerator.nLEFT_X;
  341.       this.mcPieceC3._y = MazeGenerator.nLOWER_Y;
  342.       _loc3_.splice(_loc4_,1);
  343.       _loc4_ = Math.round(Math.random() * (_loc3_.length - 1));
  344.       this.mcPieceC4 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_CORNER_DOWN,MazeGenerator.sNAME_C4,this.nDepth++);
  345.       this.mcPieceC4.gotoAndStop(_loc3_[0]);
  346.       this.mcPieceC4._x = MazeGenerator.nRIGHT_X;
  347.       this.mcPieceC4._y = MazeGenerator.nLOWER_Y;
  348.       this.flipPiece(this.mcPieceC4);
  349.    }
  350.    function generateRightJct()
  351.    {
  352.       var _loc2_ = 0;
  353.       if(CTRLGame.getRef().Level == CTRLGame.nLEVEL1)
  354.       {
  355.          _loc2_ = Math.round(Math.random() * 1);
  356.       }
  357.       else if(MazeGenerator.nUSED_RJ_PIECE == 0)
  358.       {
  359.          _loc2_ = 1;
  360.       }
  361.       else
  362.       {
  363.          _loc2_ = 0;
  364.       }
  365.       var _loc3_ = !!Math.round(Math.random());
  366.       this.mcPieceRJ = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_RIGHTJCT,MazeGenerator.sNAME_RJ,this.nDepth++);
  367.       this.mcPieceRJ.gotoAndStop(_loc2_ + 1);
  368.       if(_loc3_)
  369.       {
  370.          this.flipPiece(this.mcPieceRJ);
  371.       }
  372.       this.mcPieceRJ._x = MazeGenerator.nRIGHT_X;
  373.       this.mcPieceRJ._y = MazeGenerator.nMIDDLE_Y;
  374.       MazeGenerator.nUSED_RJ_PIECE = _loc2_;
  375.    }
  376.    function flipPiece(_mcPiece)
  377.    {
  378.       _mcPiece._xscale = -100;
  379.    }
  380.    function getVTracks(_nX, _nY)
  381.    {
  382.       var _loc4_ = this.getTabIndex(_nX,_nY);
  383.       return this.aVLines[_loc4_];
  384.    }
  385.    function getHTracks(_nX, _nY)
  386.    {
  387.       var _loc4_ = this.getTabIndex(_nX,_nY);
  388.       return this.aHLines[_loc4_];
  389.    }
  390. }
  391.